home *** CD-ROM | disk | FTP | other *** search
- (*
- From: DAVIDDANIEL ANDERSON Refer#: 2239
- Subj: FileSize in DOS Conf: (232) T_Pascal_R
-
- The FileSize "returns the number of components" in a file. Thus, it
- may not work as you might assume on untyped files, or files of records.
-
- The file should be declared as a file of byte or char or as a text
- file, in order to use FileSize.
-
- An alternative to FileSize is to use the SearchRec type in the DOS
- unit. This program deletes a file if it is 0 bytes. The filespec is
- provided by the user on the command line, and can contain wildcards.
- *)
-
- PROGRAM delete_0_byte_files;
- USES Dos;
- VAR
- MaybeZero : File of Byte; { the file in question }
- DirInfo : SearchRec; { a record of the file }
- FMask : PathStr; { entire path as specified by user }
- MZName : PathStr; { path of file in question }
- FDir : DirStr; { dir of file in question }
- FName : NameStr; { name of file in question }
- FExt : ExtStr; { ext of file in question }
- NZero : Word; { number of files deleted }
-
- BEGIN
- NZero := 0;
- IF ParamCount = 1 THEN
- FMask := ParamStr(1) { use command line info, if it exists }
- ELSE BEGIN
- Writeln('You must specify a file_mask, such as "*.*"!');
- Halt;
- END;
- FSplit(FExpand(FMask),FDir,FName,FExt); { split cmdlind info into }
- IF (FName = '') THEN { components }
- FMask := FMask + '*.*'; { if only a DOS path was specified, }
- FindFirst(FMask, Archive, DirInfo); { append a wildcard spec }
-
- WHILE DosError = 0 DO { check every valid file for size }
- BEGIN { append path to name, to allow }
- MZName := FDir+DirInfo.Name; { paths and drives other than current }
- Assign(MaybeZero,MZName); { use Assign since Erase can only work }
- { on *files*, -not- file names }
- IF (DirInfo.Size = 0) THEN BEGIN { THE MEAT! use the SearchRec }
- Writeln('Deleting ',MZName); { for determining file size }
- Erase(MaybeZero); { give a message and delete it }
- NZero := NZero + 1; { incremented counter, of course }
- END;
-
- FindNext(DirInfo); { look for another matching file }
- END;
- Writeln('Files Deleted: ',NZero); { simply display total # deleted }
- END.